#ifndef STATE_H
#define STATE_H

#include <windows.h>
// This is the base State class that all other states
// (both for the Master and Apprentice) will be derived from
// Also, this class cannot be instantiated on its own, since it
// includes pure virtual functions

//template is used here so the states can work for any entity (master/apprentice)
template <class EntityType>

class State
{

	//Only reason I put a constructor in was because I saw in the puzzle fighter base state class had a constructor
	//so I thought I'd put it there in case we needed it. Didn't realize we were following so strictly to Buckland
	//-Strog
//protected:
//		State(); // do we need a constructor? I'll set one up just in case
	// Edited York

public:
	virtual ~State(){}		
	//Used the west world state.h as base and he used a deconstructor not a constructor
	//public not protected


	// should be called when an entity enters a state
	// as an example, this is where an entity might have its location changed
	virtual void Enter(EntityType*) = 0;

	// the meat of the state, where most of the activity should occur
	virtual void Execute(EntityType*) = 0;

	// should be called upon exiting a state
	// an example of how to use this might be to show output as to what the entity is
	// doing next
	virtual void Exit(EntityType*) = 0;
};

#endif